package com.apikey.auth.service.impl;

import com.apikey.auth.service.UserService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

/**
 * 默认用户服务实现
 * 提供基础的用户服务实现，返回默认用户"root"
 * 其他系统可以通过实现UserService接口来提供自己的用户获取逻辑
 *
 * @author API Key Framework
 * @version 1.0
 */
@Service
public class DefaultUserService implements UserService {

    @Value("${apikey.framework.default-user-id:root}")
    private String defaultUserId;

    /**
     * 获取当前用户ID
     * 默认实现返回配置的默认用户ID
     * 其他系统可以重写此方法来实现自己的用户获取逻辑
     *
     * @return 当前用户ID
     */
    @Override
    public String getCurrentUserId() {
        // 默认实现：返回默认用户ID
        // 其他系统可以在这里实现自己的逻辑，例如：
        // 1. 从JWT token中解析用户ID
        // 2. 从Session中获取用户ID
        // 3. 从请求头中获取用户ID
        // 4. 从ThreadLocal中获取用户ID
        return defaultUserId;
    }

    /**
     * 验证用户是否有效
     * 默认实现：所有非空用户ID都认为是有效的
     *
     * @param userId 用户ID
     * @return 用户是否有效
     */
    @Override
    public boolean isValidUser(String userId) {
        // 默认实现：非空即有效
        // 其他系统可以在这里实现自己的用户验证逻辑
        return userId != null && !userId.trim().isEmpty();
    }

    /**
     * 获取默认用户ID
     *
     * @return 默认用户ID
     */
    @Override
    public String getDefaultUserId() {
        return defaultUserId;
    }
}